﻿//题目描述
//给定一个长度为n的数组a，和两个整数p, q。
//先进行p次区间加操作：将区间[l, r]的数字都加上x。
//再进行q次区间查询操作：求出[l, r]的数字之和。
//对于每次区间查询操作，输出结果。
//输入描述
//第一行三个整数n, p, q。(1≤n≤10^5,0≤p≤10^5,0≤10^5≤q)
//第二行n个整数表示数组a。(−10^9≤𝑎𝑖≤10^9)
//接下来p行，每行三个整数l, r, x。(1≤l≤r≤n, −10^9≤x≤10^9)
//接下来q行，每行两个整数l, r。(1≤l≤r≤n)
//输出描述
//对于每次区间查询操作，输出结果。
//利用差分数组d[i]=a[i]-a[i-1]
//对于差分数组d[i]，a1=d1,a2=d1+d2,a3=d1+d2+d3;
//所以对差分数组d[L]加上x，相当于a[L]及后面的都加上x
//所以再对[L,r]区间上加x，就需将d[L]上加上x,然后d[r+1]再减x
//将d[L]上加上x后a[L]到a[N]都会加上x,但是题目要求的是L到r之间加x
// 所以就只需要将d[r+1]再减x，也就是说a[r+1]及以后的数都会减x
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 9;
ll a[N], diff[N],prefix[N];
int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int n,m,q; cin >> n>>m>>q;
	for (int i = 1; i <= n; ++i)cin >> a[i];
	for (int i = 1; i <= n; ++i)diff[i] = a[i] - a[i - 1];
	while (m--) {
		ll l, r,x;
		cin >> l >> r>>x;
		diff[l] += x, diff[r + 1] -= x;//L到n的数加x，r+1到n的数减x来保持r后的数不变
	}
	for (int i = 1; i <= n; ++i)
		a[i] = a[i - 1] + diff[i];
	//利用差分数组更新原来的数组，更新之后得到数组是区间已经加了x之后的
	for (int i = 1; i <= n; ++i)prefix[i] = prefix[i - 1] + a[i];
	//求更新之后的前缀和数组
	while (q--) {
		int l, r; cin >> l >> r;
		cout << prefix[r] - prefix[l - 1] << "\n";
		//求更新之后的区间前缀和数组
	}
	return 0;
}